import { defineStore } from "pinia";
import { mainState } from "../../defineType";

export const useUserStore = defineStore("user", {
  state: () => {
    return {
      info: "使用pinia进行状态管理",
      count: 0,
      // token: getToken(),
      id: "",
      name: "",
      avatar: "",
      roles: [],
      permissions: ["*:*:*"],
    };
  },
  getters: {
    // 类似于组件的computed 缓存值
    // 函数接收一个可选参数：state状态对象
    countAdd(state: mainState) {
      console.log("store生效");
      return state.count;
    },
  },

  // 使用容器中的 action 同步和异步请求
  actions: {
    changeState() {
      this.count++;
      this.info = "actions使pinia状态变化";
    },
    // 登录
    //  login(userInfo) {
    //   const username = userInfo.username.trim()
    //   const password = userInfo.password
    //   const code = userInfo.code
    //   const uuid = userInfo.uuid
    //   return new Promise((resolve, reject) => {
    //     login(username, password, code, uuid).then(res => {
    //       setToken(res.token)
    //       this.token = res.token
    //       resolve()
    //     }).catch(error => {
    //       reject(error)
    //     })
    //   })
    // },
    // // 获取用户信息
    // getInfo() {
    //   return new Promise((resolve, reject) => {
    //     getInfo().then(res => {
    //       const user = res.user
    //       const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;

    //       if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
    //         this.roles = res.roles
    //         this.permissions = res.permissions
    //       } else {
    //         this.roles = ['ROLE_DEFAULT']
    //       }
    //       this.id = user.userId
    //       this.name = user.userName
    //       this.avatar = avatar
    //       resolve(res)
    //     }).catch(error => {
    //       reject(error)
    //     })
    //   })
    // },
    // // 退出系统
    // logOut() {
    //   return new Promise((resolve, reject) => {
    //     logout(this.token).then(() => {
    //       this.token = ''
    //       this.roles = []
    //       this.permissions = []
    //       removeToken()
    //       resolve()
    //     }).catch(error => {
    //       reject(error)
    //     })
    //   })
    // }
  },
});
